/**
 * 数据劫持
 * @param component
 * @constructor
 */
import { getFormatDate, initDefaultDate, initDefaultDateByMonths, types } from '@/utils/utils';

function CommonHoc<T extends { new (...args: any[]): any }>(component: T) {
  return class extends component {
    /**
     * 初始化页面日期数据
     */
    initDefaultDate = initDefaultDate;

    /**
     * 初始化页面日期数据，从月初计算
     */
    initDefaultDateByMonths = initDefaultDateByMonths;

    /**
     * 日期转换器具
     * @param props
     */
    getFormatDate = getFormatDate;

    /**
     * 更新配置的key值
     * @param list
     */
    filtersLabelToText = (list: any[]) => {
      if (types(list) === 'array') {
        list.forEach((item: any) => {
          item.text = item.label;
        });
      }
      return list;
    };

    render() {
      return super.render();
    }
  };
}

export default CommonHoc;
